package com.lianniu.mgr.baseService.area.dao;

import java.util.List;

import com.lianniu.mgr.baseService.staff.model.Staff2SysAreaVo;
import org.apache.ibatis.annotations.Param;
import com.lianniu.mgr.baseService.area.model.SystemAreaVo;

/**
 * @ClassName：SystemAreaInfoMapperDao
 * @Description:系统区域管理Dao

 * @Since: 2019-03-23
 * @Version:1.0
 */
public interface ISystemAreaMapperDao {
  /**
   *
   * @Description：查询所有系统区域
   * @Param:
   * @Return:List<SystemAreaVo>
   
   * @Date:2016-03-29
   */
  List<SystemAreaVo> getAllSysArea();
  /**
   *
   * @Description：根据系统区域ID查询父级区域信息
   * @Param:String areaId
   * @Return:SystemAreaVo
   
   * @Date:2016-03-29
   */
  SystemAreaVo getParentSysAreaByAreaId(String areaId);
  /**
   *
   * @Description：根据系统区域ID查询自身区域信息
   * @Param:String areaId
   * @Return:SystemAreaVo
   
   * @Date:2016-03-29
   */
  SystemAreaVo getSysAreaByAreaId(String areaId);
  /**
   *
   * @Description：新增系统区域
   * @Param:SystemAreaVo areaVo
   * @Return:int
   
   * @Date:2016-03-29
   */
  int addSysArea(SystemAreaVo areaVo);
  /**
   *
   * @Description：编辑系统区域
   * @Param:SystemAreaVo areaVo
   * @Return:int
   
   * @Date:2016-03-29
   */
  int editSysArea(SystemAreaVo areaVo);

  /**
   * @Description:校验区域编码是否重复
   * @param request
   * @return BaseResult
   
   * @Date:2016年4月10日
   * @Version 1.0.0
   */
  int isExistSysAreaCode(@Param(value = "id")String id, @Param(value = "areaCode")String areaCode);

  /**
   * @Description:根据staffId获得员工的数据（区域）权限
   * @param staffId
   * @return List<SystemAreaVo>
   
   * @Date:2016年9月27日下午4:08:17
   * @Version 1.0.0
   */
  List<SystemAreaVo> getAreaByStaffId(@Param(value="staffId") String staffId);

  /**
   * @Description:获取数据权限区域树的根节点id集合
   * @param staffId
   * @return List<SystemAreaVo>
   
   * @Date:2016年11月9日下午3:01:31
   * @Version 1.0.0
   */
  List<SystemAreaVo> getRootNodeAreasByStaffId(@Param(value="staffId") String staffId);

  /**
   * @Description:获取省市县区域信息
   * @param staffId
   * @return List<Staff2SysAreaVo>
   
   * @Date:2016年10月12日上午11:09:35
   * @Version 1.0.0
   */
  List<Staff2SysAreaVo> getProToCouAreaByStaffId(String staffId);

  /**
   * @Description:删除员工的数据权限
   * @param staffId
   
   * @Date:2016年10月12日下午2:09:48
   * @Version 1.0.0
   */
  void delPrecintByStaffId(@Param("staffId") String staffId);

  /**
   * @Description:添加员工管辖区域信息
   * @param li
   
   * @Date:2016年10月12日上午11:42:02
   * @Version 1.0.0
   */
  void addPrecinct(List<Staff2SysAreaVo> list);

  /**
   * @Description:给区域树根节点做标记
   * @param staffId
   * @param rootNodes
   
   * @Date:2016年11月9日下午2:44:23
   * @Version 1.0.0
   */
  void addRootNodes(@Param("staffId") String staffId,@Param("array")String[] rootNodes);

  /**
   * @Description:通过员工id获得其数据权限县级id
   * @param staffId
   * @return List<String>
   
   * @Date:2016年10月14日下午3:15:39
   * @Version 1.0.0
   */
  List<String> getStaff2CountyByStaffId(@Param("staffId") String staffId);

  /**
   * @Description:批量根据区域Id获取父级id
   * @param areaIdLi
   * @return List<String>
   
   * @Date:2016年10月14日上午10:50:21
   * @Version 1.0.0
   */
  List<String> getParentIdsByAreaIds(List<String> areaIdLi);

  /**
   * @Description:批量获取区域信息
   * @param areaIdLi
   * @return List<Staff2SysAreaVo>
   
   * @Date:2016年10月14日下午3:30:31
   * @Version 1.0.0
   */
  List<Staff2SysAreaVo> getAreasByAreaIds(List<String> areaIdLi);


  /**
   * @Description:获得全国，省，市，县4级区域信息
   * @return List<Staff2SysAreaVo>
   
   * @Date:2016年10月18日上午9:50:32
   * @Version 1.0.0
   */
  List<Staff2SysAreaVo> get4LevelAreas();

  /**
   * @Description:根据区域id获得下一级区域信息
   * @param areaId
   * @return List<SystemAreaVo>
   
   * @Date:2016年10月28日上午11:21:03
   * @Version 1.0.0
   */
  List<SystemAreaVo> getChildAreaByAreaId(@Param("areaId") String areaId);

  /**
   * @Description:员工是否有市级权限
   * @param staffId
   * @return boolean
   
   * @Date:2016年11月18日上午10:32:13
   * @Version 1.0.0
   */
  boolean isCityPrecintExistByStaffId(@Param("staffId") String staffId);

  /**
   * @Description:获得辖区乡镇
   * @param staffId
   * @return List<SystemAreaVo>
   
   * @Date:2016年11月19日上午11:50:51
   * @Version 1.0.0
   */
  List<SystemAreaVo> getPrecinctTown(@Param("staffId") String staffId);

  /**
   * @Description:根据parentId查询区域信息(systemArea)
   * @param parentId
   * @return BaseResult
   
   * @Date:2016年11月18日
   * @Version 1.0.0
   */
  List<SystemAreaVo> getByParentId(String parentId);

  /**
   * @Description:获取员工管辖区域下的县id集合
   * @param staffId
   * @return BaseResult
   
   * @Date:2016年12月5日下午4:16:18
   * @Version 1.0.0
   */
  List<String> getCountyIdLiByStaffId(@Param("staffId") String staffId);
  /**
   *
   * @Title: getAreaLs
   * @Description: admin账号获取全部区域
   * @return List<SystemAreaVo>    返回类型
   */
  List<SystemAreaVo> getAreaLs();

  /**
   * @Description:获取员工管辖区域下的省信息集合
   * @param staffId
   * @return List<SystemAreaVo>
   
   * @Date:2016年12月29日下午3:01:37
   * @Version 1.0.0
   */
  List<SystemAreaVo> getProvincesByStaffId(@Param("staffId") String staffId);


  /**
   * @Description:admin_area_id转sys_area_id
   * @param areaId
   * @return
   
   * @Date:2017年2月28日下午4:21:32
   * @Version 1.0.0
   */
  String getSysAreaIdByAdminAreaId(@Param("areaId") String areaId);
}
